namespace SubSonic
{
    using System;
    using System.CodeDom.Compiler;
    using System.Data;

    public interface ICodeLanguage
    {
        CodeDomProvider CreateCodeProvider();
        string GetDefaultValue(string colName, DbType dbType, bool isNullableColumn);
        string GetUsingStatements(string[] namespaces);
        string GetVariableType(DbType dbType, bool isNullableColumn);
        bool IsKeyword(string word);

        string CodeProvider { get; }

        string DefaultUsingStatements { get; }

        string FileExtension { get; }

        string Identifier { get; }

        string ShortName { get; }

        string TemplatePrefix { get; }
    }
}

